<?php
/**
 * Copyright (c) 2008-2011 Submit Consulting. Lima-Peru. All Right Reserved.
 * @author Ing. Angel Sullon M. (asullom@hotmail.com)
 * Created: 21.SEP.2000
 * Last Modify: 11.AGO.2011
 * Description of ResumenReportData: Reporte
 */
class ResumenReportData {
	public function listSeguimientoByItemTipo($proyectoId,$iteracionId = '') {//CRUD create, reader, update, delete
		$tran= new ConnectDb();
		$tran->getConnection();
		$li=array();
		try{
                $p=0;
                foreach (ItemTipo::$enum as $key => $value) {

                $d=new ResumenPorSeguimientoFrom();
                $qry="  
                SELECT  i.ItemTipo, i.Estado, COUNT(ItemId) AS SubTotSeguiByEstado
                        FROM  Item i, Producto p, Iteracion it, Proyecto py
                        WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ? ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " GROUP BY  i.ItemTipo, i.Estado ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			$estados=array();
                        $p2=0;
                        $totalEstadoItemTipo=0;
			while( $row=mysql_fetch_array($rs) ) {
                                $d2=new EstadoItemTipoForm();
				$d2->setEstadoKey($row["Estado"]);
				$d2->setSubTotal($row["SubTotSeguiByEstado"]);
                                $estados[$p2++]=$d2;
                                $totalEstadoItemTipo += $d2->getSubTotal();
			}
                        $d->setItemTipoKey($key);
                        $d->setItemTipoValue($value);
                        $d->setListEstadosItemTipoRef($estados);
                        $d->setTotalEstadoItemTipo($totalEstadoItemTipo);



                $qry="
     SELECT  i.ItemTipo, i.Estado,  i.prioridad, COUNT(ItemId) AS SubTotSeguiPendientByPrioridad
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	AND i.Estado IN ('ToDo','New')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?
                        AND i.prioridad=0";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " GROUP BY  i.ItemTipo, i.Estado, i.prioridad  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setPrioridad0($row["SubTotSeguiPendientByPrioridad"]);
                        }
                $qry="
     SELECT  i.ItemTipo, i.Estado,  i.prioridad, COUNT(ItemId) AS SubTotSeguiPendientByPrioridad
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	AND i.Estado IN ('ToDo','New')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?
                        AND i.prioridad=1";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " GROUP BY  i.ItemTipo, i.Estado, i.prioridad  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setPrioridad1($row["SubTotSeguiPendientByPrioridad"]);
                        }

                $qry="
     SELECT  i.ItemTipo, i.Estado,  i.prioridad, COUNT(ItemId) AS SubTotSeguiPendientByPrioridad
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	AND i.Estado IN ('ToDo','New')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?
                        AND i.prioridad=2";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " GROUP BY  i.ItemTipo, i.Estado, i.prioridad  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setPrioridad2($row["SubTotSeguiPendientByPrioridad"]);
                        }

                $qry="
     SELECT  i.ItemTipo, i.Estado,  i.prioridad, COUNT(ItemId) AS SubTotSeguiPendientByPrioridad
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	AND i.Estado IN ('ToDo','New')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?
                        AND i.prioridad=3";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " GROUP BY  i.ItemTipo, i.Estado, i.prioridad  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setPrioridad3($row["SubTotSeguiPendientByPrioridad"]);
                        }





 $qry="
      SELECT COALESCE( SUM(i.Esfuerzo) , 0 ) AS EsfuerzoEnEspera
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	 AND i.Estado IN ('ToDo','New')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?     ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= "  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setEsfuerzoEnEspera($row["EsfuerzoEnEspera"]);
                        }
$qry="
      SELECT COALESCE( SUM(i.Esfuerzo) , 0 ) AS EsfuerzoEnCurso
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	 AND i.Estado IN ('Open','InProgress')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?     ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= "  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setEsfuerzoEnCurso($row["EsfuerzoEnCurso"]);
                        }
$qry="
      SELECT COALESCE( SUM(i.Esfuerzo) , 0 ) AS EsfuerzoCompletado
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	 AND i.Estado IN ('Done','Closed','Approved')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?     ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= "  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setEsfuerzoCompletado($row["EsfuerzoCompletado"]);
                        }
$qry="
      SELECT COALESCE( SUM(i.Esfuerzo) , 0 ) AS EsfuerzoTotal
	FROM  Item i, Producto p, Iteracion it, Proyecto py
	WHERE  i.productoId=p.productoId AND p.iteracionId=it.iteracionId AND it.proyectoId=py.proyectoId
	 AND i.Estado IN ('ToDo','New','Open','InProgress','Done','Closed','Approved')
                        AND py.ProyectoId=?
                        AND  i.ItemTipo = ?     ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= "  ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$pre->set($key);
                        if( !empty ($iteracionId))
                            $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
			if( $row=mysql_fetch_array($rs) ) {
                            $d->setEsfuerzoTotal($row["EsfuerzoTotal"]);
                        }



                        $li[$p++]=$d;
                }


			mysql_free_result($rs);
		}catch(Exception $e){
			throw new GlobalException("ResumenReportData.listSeguimientoByItemTipo ".$e->getMessage());
		}
		$tran->close();
		return $li;
	}

















	public function listSeguimientoBySprint($proyectoId,$iteracionId = '') {//CRUD create, reader, update, delete
		$tran= new ConnectDb();
		$tran->getConnection();
		$li=array();
		try{
                
                
$qry="

SELECT  it.IteracionId, it.RutaSprint,
(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnEspera
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('Open','InProgress')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnCurso
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('Done','Closed','Approved')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoCompletado
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New','Open','InProgress','Done','Closed','Approved')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoTotal
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New') AND i2.Prioridad=0
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnEsperaConPrioridad0
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New') AND i2.Prioridad=1
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnEsperaConPrioridad1
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New') AND i2.Prioridad=2
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnEsperaConPrioridad2
,(
 SELECT  COUNT(ItemId)
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New') AND i2.Prioridad=3
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS CantTrabajoEnEsperaConPrioridad3

,(
 SELECT  COALESCE( SUM(i2.Esfuerzo) , 0 )
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS EsfuerzoEnEspera
,(
 SELECT  COALESCE( SUM(i2.Esfuerzo) , 0 )
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('Open','InProgress')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS EsfuerzoEnCruso
,(
 SELECT  COALESCE( SUM(i2.Esfuerzo) , 0 )
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('Done','Closed','Approved')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS EsfuerzoCompletado
,(
 SELECT  COALESCE( SUM(i2.Esfuerzo) , 0 )
	FROM  Item i2, Producto p2, Iteracion it2, Proyecto py2
	WHERE  i2.productoId=p2.productoId AND p2.iteracionId=it2.iteracionId AND it2.proyectoId=py2.proyectoId
	AND py2.ProyectoId=it.ProyectoId AND i2.Estado IN ('ToDo','New','Open','InProgress','Done','Closed','Approved')
	AND it2.iteracionId=it.IteracionId
	GROUP BY  it2.IteracionId
) AS EsfuerzoTotal

	FROM  Iteracion it
   WHERE
                        it.ProyectoId=?  ";
                        if( !empty ($iteracionId)) $qry .= " AND it.IteracionId=? ";
                        $qry .= " ORDER BY  it.RutaSprint ";
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
                        if( !empty ($iteracionId)) $pre->set($iteracionId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Producto", E_USER_ERROR. "</p>");
                        $p=0;
			while( $row=mysql_fetch_array($rs) ) {
                            $d=new ResumenPorSprintForm();
                            $d->setIteracionId($row["IteracionId"]);
                            $d->setRutaSprint($row["RutaSprint"]);
                            $d->setCantTrabajoEnEspera($row["CantTrabajoEnEspera"]);
                            $d->setCantTrabajoEnCurso($row["CantTrabajoEnCurso"]);
                            $d->setCantTrabajoCompletado($row["CantTrabajoCompletado"]);
                            $d->setCantTrabajoTotal($row["CantTrabajoTotal"]);
                            $d->setCantTrabajoEnEsperaConPrioridad0($row["CantTrabajoEnEsperaConPrioridad0"]);
                            $d->setCantTrabajoEnEsperaConPrioridad1($row["CantTrabajoEnEsperaConPrioridad1"]);
                            $d->setCantTrabajoEnEsperaConPrioridad2($row["CantTrabajoEnEsperaConPrioridad2"]);
                            $d->setCantTrabajoEnEsperaConPrioridad3($row["CantTrabajoEnEsperaConPrioridad3"]);
                            $d->setEsfuerzoEnEspera($row["EsfuerzoEnEspera"]);
                            $d->setEsfuerzoEnCruso($row["EsfuerzoEnCruso"]);
                            $d->setEsfuerzoCompletado($row["EsfuerzoCompletado"]);
                            $d->setEsfuerzoTotal($row["EsfuerzoTotal"]);
                            $li[$p++]=$d;
                        }

			mysql_free_result($rs);
		}catch(Exception $e){
			throw new GlobalException("ResumenReportData.listSeguimientoByItemTipo ".$e->getMessage());
		}
		$tran->close();
		return $li;
	}
}
?>
